package top.riske.gen3d.service;

import com.baomidou.mybatisplus.extension.service.IService;
import jakarta.servlet.http.HttpServletRequest;
import top.riske.gen3d.entity.Hunyuan3DFile;
import top.riske.gen3d.entity.Hunyuan3DJob;

import java.util.List;

public interface Hunyuan3DJobService extends IService<Hunyuan3DJob> {

    /**
     * 根据用户ID查询任务
     * @param accountId 用户ID
     * @return 任务列表
     */
    List<Hunyuan3DJob> getJobsByAccountId(Long accountId, HttpServletRequest request);

    /**
     * 处理文件路径为URL,如：/2025/9/25/428a79eb36384ca18789abf993590b79/material.mtl
     * 转换为：http://localhost:8080/file/2025/9/25/428a79eb36384ca18789abf993590b79/material.mtl
     * @param file 文件对象，会同步处理此对象
     * @param request 请求对象
     * @return 处理后的文件对象
     */
    Hunyuan3DFile handlePathToUrl(Hunyuan3DFile file, HttpServletRequest request);

    /**
     * 删除任务
     * @param id 任务主键ID
     * @param accountId 用户ID
     * @return 删除结果
     */
    boolean deleteJob(Long id, Long accountId);

    /**
     * 搜索任务, 全文搜索
     * @param target
     * @return
     */
    List<Hunyuan3DJob> selectJobWithFileByFullText(String target);

    /**
     * AI推荐用户可能感兴趣的模型
     * @param target
     * @return
     */
    List<Hunyuan3DJob> searchLikeByAi(String target, HttpServletRequest request);

    /**
     * 添加任务到我的模型
     * @param id 任务ID
     * @param accountId 用户ID
     * @return
     */
    Hunyuan3DJob addJobToMine(Long id, Long accountId);

}
